package shejimoshi;

/**
 * 模板模式
 * 一个抽象类公开定义了执行它的方法的方式
 * 子类可以按需要重写方法实现，但调用将以抽象类中定义的方式
 * 优点： 1、封装不变部分，扩展可变部分。 2、提取公共代码，便于维护。 3、行为由父类控制，子类实现。
 * 应用实例
 * Spirng 中对 Hibernate 的支持，将一些已经定好的方法封装起来，
 * 比如开启事务、获取 Session、关闭 Session 等，程序员不重复写那些已经规范好的代码，直接丢一个实体就可以保存。
 */

public abstract class moban {
    abstract void initialize();
    abstract void startPlay();
    abstract void endPlay();

    //模板
    public final void play(){

        //初始化游戏
        initialize();

        //开始游戏
        startPlay();

        //结束游戏
        endPlay();
    }
}